package com.tenton.service;

import com.tenton.MyException.DataNotExist;
import com.tenton.MyException.InsufficientQuantity;
import com.tenton.pojo.ExCommodity;
import com.tenton.pojo.Stock;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * @Date: 2021/1/9
 * @Author: Tenton
 * @Description:
 */
public interface StockService {
    /**
     * 删除仓库
     *
     * @param id
     * @return
     */
    void deleteByPrimaryKey(Integer id);

    /**
     * 获取所有仓库信息
     *
     * @param pn
     * @param model
     * @return
     */
    void getAll(Integer pn, ModelMap model);

    /**
     * 查询仓库信息
     *
     * @param id
     * @param model
     */
    void selectByPrimaryKey(Integer id, Model model);

    /**
     * 查询仓库信息
     *
     * @param id
     * @return
     */
    Stock selectById(Integer id);

    /**
     * 查询单个仓库信息
     *
     * @param id
     * @param model
     */
    void getStock(Integer id, Model model);

    /**
     * 修改仓库信息
     *
     * @param stock
     * @param session
     * @return
     */
    void update(Stock stock,HttpSession session) throws DataNotExist;

    /**
     * 仓库关联商品
     *
     * @param comId
     * @param model
     */
    void StockWithCom(Integer comId, Model model);

    /**
     * 仓库关联商品
     *
     * @param comId
     * @return
     */
    Stock stockWithComId(Integer comId);

    /**
     * 仓库关联商品
     *
     * @param exCommodity
     * @param session
     * @return
     */
    void StockWithComByEntity(ExCommodity exCommodity,HttpSession session) throws InsufficientQuantity, DataNotExist;

    /**
     * 仓库库存
     *
     * @param pn
     * @param model
     * @return
     */
    void StockWithComNum(Integer pn, ModelMap model);

    /**
     * 仓库库存
     *
     * @return
     */
    List<Stock> StockWithNum();

    /**
     * 仓库商品生产日期
     *
     * @param pn
     * @param model
     * @return
     */
    void StockWithComData(Integer pn, ModelMap model);

    /**
     * 仓库商品生产日期
     *
     * @return
     */
    List<Stock> StockWithData();

    /**
     * 商品名称模糊查询
     *
     * @param comName
     * @param pn
     * @param model
     * @return
     */
    void getByParams(String comName, Integer pn, ModelMap model);
}
